using Sustainalytics.ESGRatings.Computing.Entities;
using System;
using System.Collections.Generic;

namespace Sustainalytics.ESGRatings.BusinessLogic.Computing
{
    internal interface IComputationSet
    {
        int CompaniesNo { get; }
        int Id { get; }
        int IndicatorsNo { get; }

        bool SetHasDefaultValues();

        void AddMatrix<TV>(Guid matrixId, IEnumerable<EntityIndicators<TV, float>> weights);

        void AddIndicatorsRawScore(IEnumerable<EntityIndicators<Guid, IndicatorScore>> companiesIndicators, int comparativeGroupType = 0);

        bool DeleteMatrix(Guid matrixId);

        IEnumerable<Guid> GetLoadedMatrices();

        bool IsActive { get; set; }

        Guid? DefaultMatrixId { get; set; }

    }
}